iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0
Cloud Native

【하나, 둘, ready, get set, go】系列 第 22

【하나, 둘, ready, get set, go】Day 22 - 使用 GORM 對 SQL 資料庫進行更新資料 (Update)

  • 分享至 

  • xImage
  •  

前情提要

前面兩天我們將新增、讀取的功能寫好了,今天要來繼續來將更新的功能來實作出來~

實際操作

我們回到 repository/album.go,來撰寫 Update 的 method

這邊傳入的參數,我們將其型別設為 interface{},也就是 any
可以傳入任意型別的資料型態,方便後面要介紹的更新方法

透過 GORM 提供的 Updates 來將要進行更新的資料傳入

// Update 更新資料
func Update(a database.Album, updateData interface{}) {
    database.DB.Model(&a).Updates(updateData)
}

實際呼叫

回到 main.go

這邊有兩種更新方法,一種是透過 Album struct,一種是透過 map[string]interface{}

下面就來個別使用看看,前面的 Code 就不贅述了
因為都跟前面的一樣,有需要的可以自行到前一天來做觀看

下面就以主要部分來做說明

使用 Album struct 進行更新

// 這邊的 album 變數,是在前面宣告的

repository.Update(album, database.Album{
    Title:       "LILAC",
    Artist:      "IU",
    ReleaseDate: "2021/03/25",
})

使用 map[string]interface{} 進行更新

這邊 map 裡使用的 key 是對應到 SQL 資料庫裡 Album 資料表的欄位名稱

// 這邊的 album 變數,是在前面宣告的

repository.Update(album, map[string]interface{}{
    "title":        "KILL MY DOUBT",
    "artist":       "ITZY",
    "release_date": "2023/07/31",
})

執行後,就可以將 album 變數輸出出來,確認是否有更新成功啦~

https://ithelp.ithome.com.tw/upload/images/20230910/20140363BVBxPsxYfb.png

⬆️ 前面兩個輸出結果分別是 ReadAllRead 的,後兩個輸出結果分別是對應到 Album structmap[string]interface{}

以上 Sample Code 可以在我 GitHub 上找到
https://github.com/leoho0722/it15th

總結

今天我們透過 GORM 來實作向 SQL 資料庫進行更新資料

明天要來介紹 CRUD 中的最後一個,也就是 Delete 刪除資料的部分

明天見~


上一篇
【하나, 둘, ready, get set, go】Day 21 - 使用 GORM 對 SQL 資料庫進行讀取資料 (Read)
下一篇
【하나, 둘, ready, get set, go】Day 23 - 使用 GORM 對 SQL 資料庫進行刪除資料 (Delete)
系列文
【하나, 둘, ready, get set, go】30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言